Applications and high performance networks to support new usage models and services such as voice, video, transactions, and private data, present new challenges in the area of security. The need to protect data in storage or in transit for confidentiality and integrity is important, but supporting high speed cryptographic operations and storage required to maintain secured access to protected code and/or data adds to complexity and ultimately to expense.
One technique for creating and maintaining a secured, protected, or isolated partition or environment is known as establishing an enclave. An enclave is a set of information and processing capabilities that are protected as a group. The information and processing capabilities may include networks, hosts, or applications.
A commonly used processing technique for accessing data and/or instructions is through caches which support virtual memory, e.g. by employing a translation look-aside buffer (TLB) to quickly perform translations in hardware according to mappings, from linear addresses to physical memory addresses, found in page tables. Entries in the TLB may be associated with one or more particular processor core, hardware thread, or logical processor. Thus the data that can be accessed in a cache may be protected from access by unauthorized processor cores, hardware threads, or logical processors.
Managing permissions, physical memory and/or changing mappings in page tables is typically managed by an operating system (OS) but when the memory contents are protected, e.g. as in an enclave, the OS may not be permitted or trusted to access to the actual protected contents, i.e. the enclave has private memory. Therefore guaranteeing the security and/or integrity of private memory contents and managing the technical constraints of a limited amount physical memory without being able to trust an OS presents a set of unique security and performance challenges.
To date, security solutions that address these challenges, and potential solutions to such performance limiting issues, as well as design, validation and other complexities have not been adequately explored.